package com.ezops.dao.facade;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import com.ezops.models.Client;
import com.ezops.models.ClientEzopsFieldMappingModel;
import com.ezops.models.ClientFields;
import com.ezops.models.EzopsClient;
import com.ezops.models.EzopsFields;

public interface IClientDataTransferFacade extends DataTransferFacade<Client>{

	/***
	 * Find a specific entity based on search criteria
	 */
	public abstract List<ClientFields> getAllClientFields(String clientId,
			String assetId);

	/***
	 * Find a specific entity based on search criteria
	 */
	public abstract List<EzopsFields> getAllEzopsFields();

	public abstract List<ClientEzopsFieldMappingModel> getAllMapping(
			String clientId, String assetId);

	/**
	 * Convert the inputstream into list of ClientEzopsFieldMappingModel.
	 * 
	 * @param is
	 * @return
	 * @throws IOException
	 */
	public abstract List<ClientEzopsFieldMappingModel> convertTo(InputStream is)
			throws IOException;

	/**
	 * Return the list of EZOPS Client
	 * @return
	 */
	public abstract List<EzopsClient> getAllEzopsClients();

	public abstract boolean saveFieldMappings(List<ClientEzopsFieldMappingModel> fieldMappingJson);

}